// 目标：使用Vue.use将自定义指令全局注册
// 明白 Vue.use作用:通过vue调用它内部的一个方法并传入Vue,意义：插件就不需要集成Vue
// 规则：这个插件：要么是一个function(Vue){}，要么是一个{ install(Vue){...}}
// export default (Vue) => {
//   Vue.prototype.$route2 = 123
//   console.log('方法触发了')
// }
// const obj = {
//   install(Vue) {
//     Vue.prototype.$route2 = 123
//     console.log('方法触发了')
//   },
//   abc() {
//     console.log('abc')
//   }
// }
// export default obj
import defaultImg from '@/assets/common/head.jpg'
import { changeEnur } from '@/api/constant/employees'
const directive = {
  install(Vue) {
    const directiveObj = {
      imgerror: {
        inserted(dom, obj, vnode) {
          dom.src = dom.src || obj.value || defaultImg

          dom.addEventListener('error', () => {
            dom.src = obj.value || defaultImg
          })
        },
        componentUpdated(dom, obj) {
          dom.src = dom.src || obj.value || defaultImg
        }
      },
      xxx: {},
      abc: {},
      formatVal: {
        // 指令生命周期
        // bind,inserted,update,componentUpdated,unbind
        // inserted(dom, obj, vnode) {
        // dom:指令所在标签dom
        // obj:{
        //   属性,修饰符，值(value)
        // }
        // vnode:{
        //   context:指令所在组件的实例this
        // }
        // }
        inserted(dom, obj, vnode) {
          dom.innerText = changeEnur(obj.arg, obj.value)
        },
        componentUpdated(dom, obj, vnode) {
          dom.innerText = changeEnur(obj.arg, obj.value)
        }
      }
    }
    Object.entries(directiveObj).forEach((item) => {
      Vue.directive(item[0], item[1])
    })
  }
}
export default directive
